iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
Python

pythonGUI學習筆記系列 第 11

Day 11: PySide6 日期調整 (QDateEdit)和時間調整(QTimeEdit)元件

  • 分享至 

  • xImage
  •  

日期調整元件(QDateEdit) 和 時間調整(QTimeEdit)元件

  • QDateEdit 日期調整元件 : 日期選擇元件,可以手動選擇日期。

  • QTimeEdit 時間調整元件 : 時間調整元件,和 QDateEdit 類似,可以手動輸入來調整時間。

1. QDateEdit 使用

QDateEdit 添加

from PySide6.QtWidgets import QApplication , QMainWindow , QDateEdit

class Mywindow(QMainWindow):
    def __init__(self):
        super().__init__()
        Date = QDateEdit()
        self.setCentralWidget(Date)

if __name__ == "__main__":
    app = QApplication([])
    window = Mywindow()
    window.show()
    app.exec()

添加圖片

QDateEdit 常用的信號

  • dateChanged.connect(function) : 當日期改變時,觸發信號。下面範例是改變日期時,使用date()取得當前設置的日期,將日期顯示在標籤上。
from PySide6.QtWidgets import QApplication , QWidget , QDateEdit , QLabel , QHBoxLayout

class Mywindow(QWidget):
    def __init__(self):
        super().__init__()
        # 新增元件
        Date = QDateEdit()
        label = QLabel("時間")
        #信號
        Date.dateChanged.connect(lambda: label.setText(Date.date().toString()))
        #設定布局
        layout = QHBoxLayout()
        layout.addWidget(Date)
        layout.addWidget(label)
        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication([])
    window = Mywindow()
    window.show()
    app.exec()

QDateEdit 常用的功能

  • setDisplayFormat(format) : 改變日期元件的樣式,可以使用不同的格式來顯示。例如,yyyy 代表年份,MM 代表月份,若要顯示月份的縮寫,可以使用 MMM,dd 代表日期。如果還要顯示星期,可以使用 ddd(簡寫)或 dddd(完整顯示),在設定時要注意字母大小寫是固定的。下面範例示範了三種不同的表示方法。
from PySide6.QtWidgets import QApplication , QWidget , QDateEdit , QLabel , QVBoxLayout

class Mywindow(QWidget):
    def __init__(self):
        super().__init__()
        # 新增元件
        Date1 = QDateEdit()
        Date1.setDisplayFormat("dd/MM/yyyy")
        Date2 = QDateEdit()
        Date2.setDisplayFormat("yyyy/MM/dd")

        #新增星期
        Date3 = QDateEdit()
        Date3.setDisplayFormat("yyyy/MM/dd/dddd")

        #設定布局
        layout = QVBoxLayout()
        layout.addWidget(Date1)
        layout.addWidget(Date2)
        layout.addWidget(Date3)
        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication([])
    window = Mywindow()
    window.show()
    app.exec()

日期樣式

  • setDate(QDate) : 設定日期,要配合QDate使用。下面範例是設定成2003/10/30。
from PySide6.QtWidgets import QApplication , QMainWindow , QDateEdit
from PySide6.QtCore import QDate

class Mywindow(QMainWindow):
    def __init__(self):
        super().__init__()
        Date = QDateEdit()
        Date.setDisplayFormat("yyyy/MM/dd")
        Date.setDate(QDate(2003,10,30))
        self.setCentralWidget(Date)

if __name__ == "__main__":
    app = QApplication([])
    window = Mywindow()
    window.show()
    app.exec()
  • setMinimumDate(QDate)setMaximumDate(QDate) : 分別是設定日期下限,和上限的方法,在設定時需要配合使用QDate。下面範例是將範圍設在2003年。
from PySide6.QtWidgets import QApplication , QMainWindow , QDateEdit
from PySide6.QtCore import QDate

class Mywindow(QMainWindow):
    def __init__(self):
        super().__init__()
        Date = QDateEdit()
        Date.setDisplayFormat("yyyy/MM/dd")
        Date.setMaximumDate(QDate(2003,12,31))
        Date.setMinimumDate(QDate(2003,1,1))
        self.setCentralWidget(Date)

if __name__ == "__main__":
    app = QApplication([])
    window = Mywindow()
    window.show()
    app.exec()
  • setDateRange(start,end) : 設置日期範圍,在設定時需要配合使用QDate。下面範例是將範圍設在2003年。
from PySide6.QtWidgets import QApplication , QMainWindow , QDateEdit
from PySide6.QtCore import QDate

class Mywindow(QMainWindow):
    def __init__(self):
        super().__init__()
        Date = QDateEdit()
        Date.setDisplayFormat("yyyy/MM/dd")
        Date.setDateRange(QDate(2003,1,1),QDate(2003,12,31))
        self.setCentralWidget(Date)

if __name__ == "__main__":
    app = QApplication([])
    window = Mywindow()
    window.show()
    app.exec()

2. QTimeEdit 使用

QTimeEdit 添加

from PySide6.QtWidgets import QApplication , QMainWindow , QTimeEdit

class Mywindow(QMainWindow):
    def __init__(self):
        super().__init__()
        time = QTimeEdit()
        self.setCentralWidget(time)

if __name__ == "__main__":

    app = QApplication([])
    window = Mywindow()
    window.show()
    app.exec()

QTimeEdit 常用的信號

  • timeChanged.connect(function) : 當前時間改變時,觸發信號。下面範例是改變日期時,使用time()取得當前設置的日期,將時間顯示在標籤上。
from PySide6.QtWidgets import QApplication , QWidget , QTimeEdit , QLabel , QVBoxLayout

class Mywindow(QWidget):
    def __init__(self):
        super().__init__()

        Time = QTimeEdit()
        label = QLabel("時間")

        Time.timeChanged.connect(lambda : label.setText(Time.time().toString()))

        layout = QVBoxLayout()
        layout.addWidget(Time)
        layout.addWidget(label)
        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication([])
    window = Mywindow()
    window.show()
    app.exec()

添加時間元件

QTimeEdit 常用的功能

  • setDisplayFormat() : 設定時間的樣式時,hh 代表小時,mm 代表分鐘,ss 代表秒,ap 代表上下午(AM/PM)。下面範例使用了三種不同的樣式。
from PySide6.QtWidgets import QApplication , QWidget , QTimeEdit , QLabel , QVBoxLayout

class Mywindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(100,100,500,500)

        Time1 = QTimeEdit()
        Time1.setDisplayFormat("hh/mm/ss")

        Time2 = QTimeEdit()
        Time2.setDisplayFormat("hh:mm:ss")

        Time3 = QTimeEdit()
        Time3.setDisplayFormat("ap hh:mm:ss")

        layout = QVBoxLayout()
        layout.addWidget(Time1)
        layout.addWidget(Time2)
        layout.addWidget(Time3)
        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication([])
    window = Mywindow()
    window.show()
    app.exec()

時間樣式

  • setTime(QTime) : 設定時間,要使用時需要配合QTime()。下面範例是將時間設定成20:10:10。
from PySide6.QtWidgets import QApplication , QMainWindow , QTimeEdit
from PySide6.QtCore import QTime

class Mywindow(QMainWindow):
    def __init__(self):
        super().__init__()
        time = QTimeEdit()
        time.setDisplayFormat("hh:mm:ss")
        time.setTime(QTime(20,10,10))
        self.setCentralWidget(time)

if __name__ == "__main__":

    app = QApplication([])
    window = Mywindow()
    window.show()
    app.exec()
  • setMinimumDate(QDate)setMaximumDate(QDate) : 分別是設定時間下限,和上限的方法,在設定時需要配合使用QTate。範例是將時間設置在1小時內。
from PySide6.QtWidgets import QApplication , QMainWindow , QTimeEdit
from PySide6.QtCore import QTime

class Mywindow(QMainWindow):
    def __init__(self):
        super().__init__()
        time = QTimeEdit()
        self.setCentralWidget(time)
        time.setDisplayFormat("hh:mm:ss")
        time.setMaximumTime(QTime(1,0,0))
        time.setMinimumTime(QTime(0,0,0))

if __name__ == "__main__":
    app = QApplication([])
    window = Mywindow()
    window.show()
    app.exec()
  • setTimeRange(start,end) : 設置時間範圍,在設定時需要配合使用QTate。範例是將時間設置在1小時內。
from PySide6.QtWidgets import QApplication , QMainWindow , QTimeEdit
from PySide6.QtCore import QTime

class Mywindow(QMainWindow):
    def __init__(self):
        super().__init__()
        time = QTimeEdit()
        self.setCentralWidget(time)
        time.setDisplayFormat("hh:mm:ss")
        time.setTimeRange(QTime(0,0,0),QTime(1,0,0))
        
if __name__ == "__main__":
    app = QApplication([])
    window = Mywindow()
    window.show()
    app.exec()

總結

1. 日期調整元件(QDateEdit)

  • QDateEdit 添加按鈕
功能 方法
添加元件 QDateEdit()
  • QDateEdit 常用的信號
功能 方法
當前日期改變 dateChanged.connect(function)
  • QDateEdit 常用的功能
功能 方法
當前的日期 date()
改變樣式 setDisplayFormat(format)
設定日期 setDate(QDate)
設定日期上限 setMaximumDate(QDate)
設定日期下限 setMinimumDate(QDate)
設定日期範圍 setDateRange(start,end)

2. 時間調整(QTimeEdit)元件

  • QTimeEdit 添加
功能 方法
添加元件 QTimeEdit()
  • QTimeEdit 常用的信號
功能 方法
當前時間改變 timeChanged.connect(function)
  • QTimeEdit 常用的功能
功能 方法
當前的時間 time()
改變樣式 setDisplayFormat(format)
設定時間 setTime(Qtime)
設定日期上限 setMaximumTime(QTate)
設定日期下限 setMinimumTime(QTate)
時間範圍 setTimeRange(start,end)

上一篇
Day 10: PySide6 複選按鈕 (QCheckBox)和單選按鈕 (QRadioButton)
下一篇
Day 12: PySide6 滑動條(QSlider)和QSpinBox數值調整元件
系列文
pythonGUI學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言